"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/21 9:52
@Description : 
python中已经提供了很多的模块 可以直接使用  无需自定义
1. math
2. random
3. datetime
"""
import math
# 随机模块
import random

from datetime import datetime, timedelta

# 绝对值
result = math.fabs(-1)
print(result)
# 次幂
result = math.pow(2, 4)
print(result)

# 3.6  大于当前值的最小整数  4
result = math.ceil(3.6)
print(result)
# 3.6  小于当前值的最大整数  3
result = math.floor(3.6)
print(result)

# python中没有常量概念  如果需要声明当前值是一个常量 一般将常量的名字全大写
PI = math.pi
print(PI)

print('----------------------------')
# 返回 0-1之间的随机小数
result = random.random()
print(result)
# 获取指定区间的随机整数  including both end points  [1,10]
result = random.randint(1, 10)
print(result)

# 获取指定区间的随机浮点数
result = random.uniform(1.5, 5.2)
print(f'1.5~5.2之间的随机小数:{result}')

lst = [10, 20, 1, 3, 5, 21, 30, 40, 50]
# 从序列中随机选取元素
rand_item = random.choice(lst)
print(f'rand_item = {rand_item}')

# 随机选择指定数量的元素
result = random.choices(lst, k=5)
print(result)
# 获取指定个数的不重复随机元素
# Chooses k unique random elements from a population sequence or set
result = random.sample(lst, 5)
print(result)

# 打乱序列的顺序  随机
print(lst)
random.shuffle(lst)
print(lst)

print('------------时间日期模块 datetime----------------')
# 获取当前时间
result = datetime.now()
print(result, type(result))
#  获取年月日
new_date = result.date()
print(new_date)
# 时分秒
new_time = result.time()
print(new_time)

# 获取时间分量
# 年
year = result.year
print(year)
# 月
month = result.month
print(month)
day = result.day
print(day)
hour = result.hour
print(hour)
minute = result.minute
print(minute)
second = result.second
print(second)

# 创建指定时间
user_time1 = datetime(2025, 3, 20, 20, 25, 30)
print(user_time1)

# 日期运算
user_time2 = datetime(2026, 3, 25, 20, 25, 30)

diff_day = user_time2 - user_time1
print(diff_day.days)

# user_time1 + 20 day
after_time = user_time1 + timedelta(days=20)
print(after_time)

# 字符串转换成日期对象
str_time = '2025-03-20 20:25:30'
#  %Y-%m-%d %H:%M:%S   Y 年  m 月  d 天  H 时 M 分钟  S 秒
date_time = datetime.strptime(str_time, '%Y-%m-%d %H:%M:%S')
print(date_time,type(date_time))
